<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
    //  立即执行函数:执行完就释放
    //  只有表达式才能被执行符号执行
    //  针对初始化功能的函数
    //  取名和不取名都一样
    //  (function (){}())  W3C推荐
    //  (function (){})()

    //   表达式执行后会被忽略表达式名字 
    var num = (function name (a,b,c){
          console.log("执行完就释放了")
          return a+b+c
     }(1,2,3))


    // 函数表达式
     var num1  = function (){
         console.log("释放了")
     }() 

     //通过+ - ！将其转换为表达式
     //通过（）将其转换表达式
     +function demo1(){
         console.log("demo1执行完就释放，找不到demo1 ")
     }()
     -function demo2(){
         console.log("demo2执行完就释放了")
     }()
     !function demo3(){
        console.log("demo3执行完就释放了")
     }()


     //(function(){})将其转换为立即执行函数，执行完释放f
     // typeof f  --->  undefined
     // 唯一一个为定义不报错的函数
     var x = 1;
     if(function f(){}){
         x += typeof f;
     }
     console.log(x)
    </script>
</body>
</html>